home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / examples / objvws.c < prev    next >
C/C++ Source or Header  |  1994-07-15  |  3KB  |  202 lines

  1. #include <stdio.h>
  2.  
  3. #ifdef SGI
  4. #include "gl.h"
  5. #include "device.h"
  6. #include "hershey.h"
  7. #else
  8. #include "vogl.h"
  9. #include "vodevice.h"
  10. #endif
  11.  
  12. #define        CUBE        1L
  13. #define        TOPLEFT        2L
  14. #define        TOPRIGHT    3L
  15. #define        BOTTOMLEFT    4L
  16. #define        BOTTOMRIGHT    5L
  17.  
  18. /* ---------------------------------------------------------------------
  19.  * Prototypes:
  20.  */
  21. int main(void);                                        /* objvws.c        */
  22. void makecube(void);                                   /* objvws.c        */
  23. void side(void);                                       /* objvws.c        */
  24.  
  25. /* ---------------------------------------------------------------------
  26.  * Source Code:
  27.  */
  28.  
  29. /*
  30.  * Demonstrate just how much you can put in an object
  31.  */
  32. int main(void)
  33. {
  34.     void        makecube();
  35.  
  36.     Screencoord    minx, maxx, miny, maxy;
  37.     short        val;
  38.  
  39.     winopen("objvws");
  40.     unqdevice(INPUTCHANGE);
  41.     qdevice(KEYBD);
  42.  
  43.     getviewport(&minx, &maxx, &miny, &maxy);
  44.  
  45.  
  46.     pushviewport();
  47.  
  48.     hfont("futura.m");
  49.     htextsize(0.5, 0.9);
  50.  
  51.     color(BLACK);
  52.     clear();
  53.  
  54.     makecube();
  55.  
  56.     /*
  57.      * set up an object which draws in the top left of the screen.
  58.      */
  59.     makeobj(TOPLEFT);
  60.         viewport(minx, (maxx - minx) / 2, (maxy - miny) / 2, maxy);
  61.         ortho2(-5.0, 5.0, -5.0, 5.0);
  62.  
  63.         color(RED);
  64.  
  65.         rect(-5.0, -5.0, 5.0, 5.0);
  66.  
  67.         perspective(400, 1.0, 0.1, 1000.0);
  68.         lookat(5.0, 8.0, 5.0, 0.0, 0.0, 0.0, 0);
  69.  
  70.         callobj(CUBE);
  71.  
  72.         color(GREEN);
  73.  
  74.         move2(-4.5, -4.5);
  75.         hcharstr("perspective/lookat");
  76.     closeobj();
  77.  
  78.     /*
  79.      * now set up one which draws in the top right of the screen
  80.      */
  81.     makeobj(TOPRIGHT);
  82.         viewport((maxx - minx) / 2, maxx, (maxy - miny) / 2, maxy);
  83.         ortho2(-5.0, 5.0, -5.0, 5.0);
  84.  
  85.         color(GREEN);
  86.  
  87.         rect(-5.0, -5.0, 5.0, 5.0);
  88.  
  89.         window(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);
  90.         lookat(5.0, 8.0, 5.0, 0.0, 0.0, 0.0, 0);
  91.  
  92.         callobj(CUBE);
  93.  
  94.         color(RED);
  95.  
  96.         move2(-4.5, -4.5);
  97.         hcharstr("window/lookat");
  98.     closeobj();
  99.  
  100.     /*
  101.      * try the bottom left
  102.      */
  103.     makeobj(BOTTOMLEFT);
  104.         viewport(minx, (maxx - minx) / 2, miny, (maxy - miny) / 2);
  105.         ortho2(-5.0, 5.0, -5.0, 5.0);
  106.  
  107.         color(MAGENTA);
  108.  
  109.         rect(-5.0, -5.0, 5.0, 5.0);
  110.  
  111.         perspective(400, 1.0, 0.1, 1000.0);
  112.         polarview(15.0, 300, 300, 300);
  113.  
  114.         callobj(CUBE);
  115.  
  116.         color(YELLOW);
  117.  
  118.         move2(-4.5, -4.5);
  119.         hcharstr("perspective/polarview");
  120.     closeobj();
  121.  
  122.     /*
  123.      * and the bottom right
  124.      */
  125.     makeobj(BOTTOMRIGHT);
  126.         viewport((maxx - minx) / 2, maxx, miny, (maxy - miny) / 2);
  127.         ortho2(-5.0, 5.0, -5.0, 5.0);
  128.  
  129.         color(CYAN);
  130.  
  131.         rect(-5.0, -5.0, 5.0, 5.0);
  132.  
  133.         window(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);
  134.         polarview(8.0, -1800, -300, 1800);
  135.  
  136.         callobj(CUBE);
  137.  
  138.         color(BLUE);
  139.  
  140.         move2(-4.5, -4.5);
  141.         hcharstr("window/polarview");
  142.     closeobj();
  143.  
  144.     /*
  145.      * now draw them
  146.      */
  147.     callobj(TOPLEFT);
  148.     callobj(TOPRIGHT);
  149.     callobj(BOTTOMLEFT);
  150.     callobj(BOTTOMRIGHT);
  151.  
  152.     qread(&val);
  153.  
  154.     gexit();
  155. }
  156.  
  157. /*
  158.  * makecube
  159.  *
  160.  *    set up a cube
  161.  */
  162. void makecube(void)
  163. {
  164.     void    side();
  165.  
  166.     makeobj(CUBE);
  167.  
  168.         /*
  169.          * The border around the cube
  170.          */
  171.         rect(-5.0, -5.0, 10.0, 10.0);
  172.  
  173.         /*
  174.          * Make the cube from 4 squares
  175.          */
  176.         pushmatrix();
  177.             side();
  178.             rotate(900, 'x');
  179.             side();
  180.             rotate(900, 'x');
  181.             side();
  182.             rotate(900, 'x');
  183.             side();
  184.         popmatrix();
  185.  
  186.     closeobj();
  187. }
  188.  
  189. /*
  190.  * side
  191.  *
  192.  *    define a face for the cube
  193.  */
  194. void side(void)
  195. {
  196.     pushmatrix();
  197.         translate(0.0, 0.0, 1.0);
  198.         rect(-1.0, -1.0, 1.0, 1.0);
  199.     popmatrix();
  200. }
  201.  
  202.